The invention generally relates to a modular BIOS and reporting information among various modules of the BIOS.
Operating systems have continually evolved. For example, older computer systems (8086, 8088 or 80286 processor-based computer systems, as examples) use sixteen bit real mode operating systems, such as MS-DOS operating systems. However, these operating systems lack multi-tasking and memory management features provided by more recent operating systems, such as thirty-two bit and sixty-four bit virtual mode operating systems.
A typical computer system includes a basic input/output system (BIOS), a term that refers to firmware that, when executed, controls various functions (keyboard, disk drives and display screen functions, for example) of the computer system at a basic level. In response to the computer booting up, a microprocessor of the computer system executes the BIOS to perform a power on self-test (POST) to locate, initialize and test devices of the computer system. Due to its ability to control the disk drives when the computer system “boots up,” the BIOS is also responsible for loading the operating system. In this manner, the typical computer system boots up by executing BIOS instructions that cause a operating system loader program to be loaded from a disk drive into system memory. The BIOS may then cause the computer system to execute the loader program that, in turn, causes the computer system to load portions of the operating system into the system memory. Subsequently, the operating system may execute one or more program(s) to initialize and start execution of the operating system. Afterwards, certain BIOS functions are used during the operation of the computer system.
The BIOS image (i.e., the program code and parameter space that define the BIOS) is stored in a memory that does not lose its stored contents when power to the computer system is removed. For example, the BIOS image may be stored in a FLASH memory, an erasable electrically programmable read only memory (EEPROM) that may be rapidly updated.
For purposes maximizing the flexibility of the BIOS, it may be desirable to form the BIOS from a group of modules to form a modular BIOS. In this manner, these modules may be plug-in modules that are each associated with one or more BIOS functions. However, a potential challenge of this arrangement is ensuring that the modules communicate with each other. To facilitate this communication, the modules may be designed with knowledge of the program code and functions that are performed by the other modules. However, such a design decreases the degree of flexibility that may otherwise be present with a pure modular approach.
Thus, there is a continuing need for an arrangement and/or technique to address one or more of the problems that are stated above.